﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using InterfaceRemota;
using System.IO;

namespace IM.gerenciadores
{
    public class GerenciadorDeXML
    {
        private static GerenciadorDeXML instancia;
        public static GerenciadorDeXML getInstancia()
        {
            if (instancia == null)
            {
                instancia = new GerenciadorDeXML();
            }
            return instancia;
        }

        private GerenciadorDeXML()
        {
            //Singleton
        }


        public void geraXMLForm(String fileName, String origemLogin, IUsuario usuario, IMensagem mensagem)
        {
            String filePath = Environment.GetEnvironmentVariable("Temp") + "\\" + origemLogin + "\\" + fileName + ".xml";

            //if (File.Exists(filePath))
            //{
            //    editaXML(filePath, usuario, mensagem);
            //}
            //else
            //{
                criaXML(filePath, usuario, mensagem);
            //}
        }


        private void editaXML(String filePath, IUsuario usuario, IMensagem mensagem)
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(filePath);

            XmlNode node = xd.CreateNode(XmlNodeType.Element, "teste", "");
            node.InnerText = "TESTE";
            xd.DocumentElement.AppendChild(node);

            xd.Save(filePath);
        }



        private void criaXML(String filePath, IUsuario usuario, IMensagem mensagem)
        {
            XmlTextWriter xr = new XmlTextWriter(filePath, Encoding.UTF8);

            xr.Formatting = Formatting.Indented;

            xr.WriteStartDocument();

            xr.WriteStartElement("usuario");
            adicionaAtributo(xr, "nome", usuario.Nome);
            adicionaAtributo(xr, "login", usuario.Login);

            xr.WriteStartElement("mensagem");
            adicionaAtributo(xr, "texto", mensagem.Mensagem);

            xr.WriteStartElement("estilo");
            adicionaAtributo(xr, "fonte", mensagem.NomeFonte);
            adicionaAtributo(xr, "estiloFonte", mensagem.EstiloFonte);
            adicionaAtributo(xr, "tamanho", mensagem.TamanhoFonte.ToString());

            xr.WriteStartElement("cor");
            adicionaAtributo(xr, "a", mensagem.A.ToString());
            adicionaAtributo(xr, "r", mensagem.R.ToString());
            adicionaAtributo(xr, "g", mensagem.G.ToString());
            adicionaAtributo(xr, "b", mensagem.B.ToString());

            xr.WriteEndElement();
            xr.WriteEndElement();
            xr.WriteEndElement();
            xr.WriteEndElement();

            xr.WriteEndDocument();

            xr.Flush();
            xr.Close();
        }

        private void adicionaAtributo(XmlTextWriter xr, String nome, String valor)
        {
            xr.WriteStartAttribute(nome);
            xr.WriteString(valor);
            xr.WriteEndAttribute();
        }
    }
}
